package com.xbongbong.pro.rabbitmq.binders;

import com.xbongbong.pro.rabbitmq.constant.AiAssistantProducerBinderConstant;
import org.springframework.cloud.stream.annotation.Output;
import org.springframework.messaging.MessageChannel;
import org.springframework.stereotype.Service;

/**
 * 智能助手　消息队列
 *
 * @Author: hongxiao
 * @date: 2019-11-17 10:52
 */
@Service("aiAssistantProducerBinder")
public interface AiAssistantProducerBinder {
    // ********************* crm ******************* **//

    /**
     * 客户
     */
    @Output(AiAssistantProducerBinderConstant.CUSTOMER_OUTPUT)
    MessageChannel customerOutput();
    /**
     * 联系人
     */
    @Output(AiAssistantProducerBinderConstant.CONTACT_OUTPUT)
    MessageChannel contactOutput();
    /**
     * 销售机会
     */
    @Output(AiAssistantProducerBinderConstant.OPPORTUNITY_OUTPUT)
    MessageChannel opportunityOutput();
    /**
     * 合同
     */
    @Output(AiAssistantProducerBinderConstant.CONTRACT_OUTPUT)
    MessageChannel contractOutput();
    /**
     * 退货退款
     */
    @Output(AiAssistantProducerBinderConstant.REFUND_OUTPUT)
    MessageChannel refundOutput();
    /**
     * 工作报告
     */
    @Output(AiAssistantProducerBinderConstant.WORK_REPORT_OUTPUT)
    MessageChannel workReportOutput();
    /**
     * 报价单
     */
    @Output(AiAssistantProducerBinderConstant.QUOTATION_OUTPUT)
    MessageChannel quotationOutput();

    // ********************* fundManagement ******************* **//
    /**
     * 回款
     */
    @Output(AiAssistantProducerBinderConstant.PAYMENT_OUTPUT)
    MessageChannel paymentOutput();
    /**
     * 发票
     */
    @Output(AiAssistantProducerBinderConstant.INVOICE_OUTPUT)
    MessageChannel invoiceOutput();
    /**
     * 付款
     */
    @Output(AiAssistantProducerBinderConstant.PAY_PLAN_OUTPUT)
    MessageChannel payPlanOutput();


    // ********************* jxc ******************* **//
    /**
     * 供应商
     */
    @Output(AiAssistantProducerBinderConstant.SUPPLIER_OUTPUT)
    MessageChannel supplierOutput();
    /**
     * 供应商联系人
     */
    @Output(AiAssistantProducerBinderConstant.SUPPLIER_CONTACT_OUTPUT)
    MessageChannel supplierContactOutput();
    /**
     * 采购合同
     */
    @Output(AiAssistantProducerBinderConstant.PURCHASE_OUTPUT)
    MessageChannel purchaseOutput();
    /**
     *　采购退货
     */
    @Output(AiAssistantProducerBinderConstant.RETURNED_PURCHASE_OUTPUT)
    MessageChannel returnedPurchaseOutput();
    /**
     * 出库单
     */
    @Output(AiAssistantProducerBinderConstant.OUTSTOCK_OUTPUT)
    MessageChannel outstockOutput();
    /**
     * 入库单
     */
    @Output(AiAssistantProducerBinderConstant.INSTOCK_OUTPUT)
    MessageChannel instockOutput();
    /**
     * 装配单
     */
    @Output(AiAssistantProducerBinderConstant.ASSEMBLE_OUTPUT)
    MessageChannel assembleOutput();
    /**
     * 调拔单
     */
    @Output(AiAssistantProducerBinderConstant.TRANSFER_OUTPUT)
    MessageChannel transferOutput();
    /**
     * 盘点单
     */
    @Output(AiAssistantProducerBinderConstant.INVENTORY_OUTPUT)
    MessageChannel inventoryOutput();
    /**
     * bom
     */
    @Output(AiAssistantProducerBinderConstant.BOM_OUTPUT)
    MessageChannel bomOutput();
    /**
     * 生产单
     */
    @Output(AiAssistantProducerBinderConstant.PRODUCTION_ORDER_OUTPUT)
    MessageChannel productionOrderOutput();

    // ********************* 产品 ******************* **//
    /**
     * 产品
     */
    @Output(AiAssistantProducerBinderConstant.PRODUCT_OUTPUT)
    MessageChannel productOutput();
    /**
     * 库存查询
     */
    @Output(AiAssistantProducerBinderConstant.PRODUCT_STOCK_OUTPUT)
    MessageChannel productStockOutput();
    /**
     * 库存预警
     */
    @Output(AiAssistantProducerBinderConstant.PRODUCT_STOCK_WARNING_OUTPUT)
    MessageChannel productStockWarningOutput();
    /**
     * 产品保质期
     */
    @Output(AiAssistantProducerBinderConstant.PRODUCT_STOCK_GUARANTEE_OUTPUT)
    MessageChannel productStockGuaranteeOutput();

    // ********************* 待（采购、生产、出库、入库） ******************* **//
    /**
     * 待采购
     */
    @Output(AiAssistantProducerBinderConstant.WAIT_PURCHASE_OUTPUT)
    MessageChannel waitPurchaseOutput();
    /**
     * 待生产
     */
    @Output(AiAssistantProducerBinderConstant.WAIT_PRODUCE_OUTPUT)
    MessageChannel waitProduceOutput();
    /**
     * 待出库
     */
    @Output(AiAssistantProducerBinderConstant.WAIT_OUTSTOCK_OUTPUT)
    MessageChannel waitOutstockOutput();
    /**
     * 待入库
     */
    @Output(AiAssistantProducerBinderConstant.WAIT_INSTOCK_OUTPUT)
    MessageChannel waitInstockOutput();
    /**
     * 市场管理
     */
    @Output(AiAssistantProducerBinderConstant.MARKET_ACTIVITY_OUTPUT)
    MessageChannel marketActivityOutput();
    /**
     * 销售线索
     */
    @Output(AiAssistantProducerBinderConstant.CLUE_OUTPUT)
    MessageChannel clueOutput();
    /**
     * 销售线索
     */
    @Output(AiAssistantProducerBinderConstant.PAAS_OUTPUT)
    MessageChannel paasOutput();

}
